functional interleaving